A computer network is a collection of interconnected computing devices that can exchange data and share resources. In a packet-based network, the computing devices communicate data by dividing the data into small blocks called packets, which are individually routed across the network from a source device to a destination device. The destination device extracts the data from the packets and assembles the data into its original form. Dividing the data into packets enables the source device to resend only those individual packets that may be lost during transmission.
Network devices and network links are bounded as to the size of packets or other blocks of data that can be transmitted between two given devices across a given link. This upper-bound is commonly referred to as a “maximum transmission unit” (MTU), also commonly referred to as a “maximum transfer unit.” RFC 791 establishes a lower-bound for MTUs of 576 bytes. That is, RFC 791 requires that network devices and network links be capable of supporting MTUs of at least 576 bytes. However, manufacturers are free to support larger MTUs, and many manufacturers frequently do so. Further details on RFC 791 can be found in “INTERNET PROTOCOL: DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION,” Information Sciences Institute, University of Southern California, September 1981, the entire contents of which are incorporated herein by reference.
When two segments of a route or path between two networking devices support different MTUs, one of the devices involved in the communication session typically resolves the MTU for the path. One conventional method for doing so, described by RFC 1191, involves the use of the Internet Control Message Protocol (ICMP) to determine the MTU for the path. In particular, RFC 1191 prescribes path MTU discovery (PMTUD) by sending a plurality of different-sized packets, each with a “don't fragment” (DF) flag set. When a downstream router receives a packet that is too large for the subsequent link, and with the DF flag set, the router will return an ICMP “Destination Unreachable” message and discards the packet. The source router then reduces its assumed PMTU size for the path and ultimately determines that the PMTU is the size of a penultimate packet sent before receiving an ICMP destination unreachable message. Further details can be found in RFC 1191 by J. Mogul et al., entitled “PATH MTU DISCOVERY,” Network Working Group, Internet Engineering Task Force (IETF), November 1990, the entire contents of which are incorporated herein by reference.
However, certain problems exist with the method proposed by RFC 1191. For example, some routers and networks do not support ICMP messages, and other routers and networks actively block ICMP messages. This often leads to the problem described by RFC 2923 as the “PMTUD black hole” and causes TCP timeouts. Further details can be found in RFC 2923 by J. Mogul et al., entitled “TCP PROBLEMS WITH PATH MTU DISCOVERY,” Network Working Group, Internet Engineering Task Force (IETF), September 2000, the entire contents of which are incorporated herein by reference.
Moreover, the method proposed in RFC 1191 requires multiple iterations of packets to be sent, often without meaningful data, only for the purpose of discovering the PMTU. This leads to wasted bandwidth and communication delays. In addition, systems that support ICMP for the purpose of PMTUD can be vulnerable to a denial of service (DoS) attack designed to exploit this behavior.